% File: ~/domain/domain/loadBalancer/ShedHeaviest.tex 
% What: "@(#) ShedHeaviest.tex, revA"

\noindent {\bf Files}   \\
\indent \#include $<\tilde{ }$/domain/loadBalancer/ShedHeaviest.h$>$  \\

\noindent {\bf Class Declaration}  \\
\indent class ShedHeaviest: public LoadBalancer \\

\noindent {\bf Class Hierarchy} \\
\indent  LoadBalancer \\
\indent\indent {\bf ShedHeaviest} \\


\noindent {\bf Description}  \\
\indent A ShedHeaviest is an object used to balance a
PartitionedDomain. It does this by shedding the boundary vertices on
the heaviest loaded partition (subdomain). \\

\noindent {\bf Class Interface}  \\
\indent\indent  // Constructors  \\
\indent\indent {\em ShedHeaviest(); }\\ 
\indent\indent {\em ShedHeaviest(double factorGreater, int
numReleases);} \\ \\
\indent\indent // Destructor  \\
\indent\indent {\em virtual~ $\tilde{}$ShedHeaviest();}  \\ \\
\indent\indent // Public Methods  \\
\indent\indent {\em virtual int balance(Graph \&theWeightedGraph) =0;} \\ \\


\noindent {\bf  Constructors  }\\
\indent {\em ShedHeaviest(); }\\ 
Sets {\em numRealeases} to $1$ and  {\em factorGreater} to
$1.0$. These are the parameters used in the {\em balance()}
method. \\ 

\indent {\em ShedHeaviest(double factorGreater, int numReleases);} \\
Sets the parameters used in the {\em balance()} method. \\

\noindent {\bf Destructor } \\
\indent {\em virtual~ $\tilde{}$ShedHeaviest();}  \\ 
Does nothing. \\

\noindent {\bf  Public Methods} \\
\indent {\em virtual int balance(Graph \&theWeightedGraph) =0;} \\ 
The heaviest loaded partition, {\em max}, is first determined by
iterating through the Graph {\em theWeightedGraph} looking at the
vertex weights. Then {\em releaseBoundary(max, theWieightedGraph,
true, factorGreater)} is invoked on the
DomainPartitioner {\em numRelease} times. Returns $0$ if successful,
otherwise a negative number and a warning message are returned if
either no link has been set to the DomainPartitioner or {\em
releaseBoundary()} returns a negative number. \\



